import 'package:casdon/modules/me/data/api/browsing_life_history_api.dart';
import 'package:casdon/modules/me/data/api/browsing_recipe_history_api.dart';
import 'package:casdon/modules/me/data/api/fans_list_api.dart';
import 'package:casdon/modules/me/data/api/flower_list_api.dart';
import 'package:casdon/modules/me/data/api/oss_sts_api.dart';
import 'package:casdon/modules/me/data/api/service_channel_list_api.dart';
import 'package:casdon/modules/me/data/api/service_order_api.dart';
import 'package:casdon/modules/me/data/api/service_post_order_api.dart';
import 'package:casdon/modules/me/data/api/service_process_api.dart';
import 'package:casdon/modules/me/data/api/service_product_list_api.dart';
import 'package:casdon/modules/me/data/api/service_reqId_api.dart';
import 'package:casdon/modules/me/data/api/social_binded_list_api.dart';
import 'package:casdon/modules/me/data/api/user_center_api.dart';
import 'package:casdon/modules/me/data/api/user_info_api.dart';

abstract class MeRepository {
  Future<void> logOut();

  // 获取用户信息，头像，昵称账号等
  Future<ResponseUserInfoApi?> getUserInfo();

  // 获取用户中心的信息，动态数量，关注数量，粉丝数等
  Future<ResponseUserCenterApi?> getUserCenterInfo();
  // 修改用户信息
  Future<void> putModifyUserInfo({
    required String? nickName,
    required String? sex, //（0男 1女 2未知）
    required String? birthday,
    required int? avatar, // ossid
  });
  // 获取瑞云工单服务返回的id，用于请求工单详细
  Future<List<ResponseServiceReqIdApi>?> getServiceReqIdList();

  // 获取瑞云工单服务返回的工单列表 <瑞云接口>
  Future<ResponseServiceOrderDataApi?> getServiceOrderList({
    required String reqId,
  });

  // 获取瑞云工单服务返回的工单处理进度 <瑞云接口>
  Future<SRVWorkOrderResponse?> getServiceProcess({required String reqId});

  // 提交售后工单 <瑞云接口>
  Future<String?> postServiceOrder({required ServicePostOrder postOrder});

  // 保存售后工单提交返回的id，用于之后的获取工单列表
  Future<SRVWorkOrderResponse?> postServiceOrderReqId({
    required String orderReqId,
  });

  // 报装报修中 获取渠道列表
  Future<ResponseServiceChannelListApi?> getSalesChannels();

  // 报装报修中 获取产品列表
  Future<ResponseServiceProductListApi?> getProducts();

  // 获取绑定的三方登录列表
  Future<List<ResponseSocialBindedListApi>?> getSocialList();

  // 设置页面，绑定三方账号
  Future<void> postSocialBind({required String source, required String code});

  // 设置页面，取消绑定三方账号
  Future<void> delSocialBind(String socialId);

  // 更新密码
  Future<void> postUpdatePwd(String userName, String pwd);

  // app更新
  Future<Map<String, dynamic>> getAppVersionInfo(
    String platform,
    String currentVer,
  );

  // 获取用户的关注人列表
  Future<ResponseFlowerListApi?> getFlowerList(int pageNum, int pageSize);

  // 获取用户的粉丝列表
  Future<ResponseFansListApi?> getFansList(int pageNum, int pageSize);

  // 获取客户端 STS Token
  Future<ResponseOssStsApi?> getOSSStsToken(String userId);

  // 根据涂鸦设备ID获取设备信息（包含 model 等）
  Future<Map<String, dynamic>?> getTuyaDeviceInfo({required String devId});

  // 获取菜谱浏览记录
  Future<ResponseBrowsingRecipeHistoryApi?> getRecipeBrowsingHistory({
    required final int pageNum,
    required final int pageSize,
  });

  // 获取生活圈浏览记录
  Future<ResponseBrowsingLifeHistoryApi?> getLifeBrowsingHistory({
    required final int pageNum,
    required final int pageSize,
  });

  // 关注/取消关注用户
  Future<void> followUser({
    required String followUuid,
    required String flag, // "1"：关注，"0"：取消关注
  });
}
